from ortools.sat.python import cp_model
# Количество врачей
num_doctors = 300
# Количество дней в неделю
num_days = 7
# Количество часов в сутках
num_hours = 24
# Создаем модель
model = cp_model.CpModel()
# Переменная для каждого врача в каждый день
for num_doctor in range(num_doctors):
    for day in range (num_days):
        #Предпологаем, что врач может работать от 8 до 12 часов в день
        model.NewBoolVar(f"WorkHours_{doctor}_{day}")
#Ограничения каждый врач работает не более 40 часов в неделю
for doctor in range(num_doctors):
    model.Add(sum(model.NewBoolVar(f"WorkDay_{doctor}_{day}") for day in range(num_days)) >= num_hours * 4)
#Решение модели
solver = cp_model.CpSolver()
Status = solver.Solve(model)
if status == cp_model.Optimal or status == cp_model:
    print("Расписание составленно.")
else:
    print("Не удалось составить расписание.")
#Выводим результаты
for doctor in range(num_doctors):
    for day in range(num_days):
        var = model.NewBoolVar(f"WorkHour_{doctor}_{day}")
        if solver.Value(var) == 1:
            print(f"Врач {doctor} работает в день {day}.")